﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using DemoUser.Application.User.Dtos;
using DemoUser.Core.User;

namespace DemoUser.Application.User.Interface
{
    public interface ITestService
    {
        //查询所有
        List<TbUser> SelectAll();

        //查询总数
        int SelectCount();

        //单条件查询
        List<TbUser> SelectByUsername(string username);

        //多条件查询
        List<TbUser> SelectByUsernameAndPassword(string username, string password);

        //模糊查询
        List<TbUser> SelectLikeUsername(string username);

        //根据主键查询
        TbUser SelectById(int id);

        //查询第一条
        TbUser SelectFirst();

        //查询最后一条
        TbUser SelectLast();

        //查询前几条
        List<TbUser> SelectCount(int count);

        //是否存在某条记录
        bool IsExist(TbUser user);

        //in查询（单个字段）
        List<TbUser> SelectInUsername(string[] username);

        //in查询（多个字段）
        List<TbUser> SelectInUsernameAndPassword(TbUser[] tbUsers);

        //in模糊查询（数组集合）
        List<TbUser> SelectLikeInUsername(string[] username);

        //in查询（对象集合）
        List<TbUser> SelectLikeInUsernameAndPassword(TbUser[] tbUsers);

        //not in 
        List<TbUser> SelectNotInUsernames(string[] username);

        //查询时忽略某个字段
        List<TbUser> SelectNotPassword();

        //分页查询

        //单表分页
        List<TbUser> SelectByPage(int pageNum,int pageSize);

        //分组查询
        List<TbUserDto> SelectGroupById();

        //插入数据

        //插入一条
        void InsertOne(TbUser tbUser);

        //修改数据
        int UpdatePassword();

        //根据id删除数据
        int DelById(int id);

        //根据id批量删除数据
        int DelByIds(int[] ids);

        //排序用法
        //OrderBy在Select之前
        List<TbUser> OrderBeforeSelect();
        //OrderBy在Select之后
        List<TbUser> OrderAfterSelect();
    }
}
